import pandas as pd

def get_sales_trend(df):
    """
    基于传入的DataFrame生成销售趋势图表数据
    参数: df - 预加载的销售数据DataFrame
    """
    try:
        # 明确指定日期格式，解决转换问题
        df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m')
        
        # 按日期分组计算总销量
        df_trend = df.groupby('日期')['销量'].sum().reset_index()
        
        # 数据排序
        df_trend = df_trend.sort_values('日期')
        
        # 构建图表数据结构
        # 使用更友好的日期格式
        dates = df_trend['日期'].dt.strftime('%Y-%m').tolist()
        sales = df_trend['销量'].tolist()
        
        # 数据验证
        if len(dates) == 0 or len(sales) == 0:
            raise ValueError("处理后的数据为空")
            
        chart_data = {
            'success': True,
            'chart_data': {
                'xAxis': {
                    'type': 'category',
                    'data': dates
                },
                'yAxis': {
                    'type': 'value',
                    'name': '销量'
                },
                'series': [{
                    'data': sales,
                    'type': 'line',
                    'name': '销量',
                    'smooth': True,  # 修正为Python布尔值
                    'itemStyle': {
                        'color': '#1890ff'
                    },
                    'lineStyle': {
                        'width': 2
                    }
                }],
                'tooltip': {
                    'trigger': 'axis',
                    'formatter': '{b}<br/>{c} 辆'
                },
                'title': {
                    'text': '汽车销售趋势分析',
                    'left': 'center',
                    'textStyle': {
                        'fontSize': 18
                    }
                },
                'grid': {
                    'left': '3%',
                    'right': '4%',
                    'bottom': '3%',
                    'containLabel': True  # 修正为Python布尔值
                }
            }
        }
        return chart_data
    except Exception as e:
        import traceback
        print(f"销售趋势数据处理错误: {str(e)}\n{traceback.format_exc()}")
        raise